const { func } = require("joi");
const { sqlOne, sqlBatch } = require("../db/common")
// 表名 greatperson 字段 id realName anonym createTime context newsLink
// 成功响应 onSuccess 失败响应 onError

// 插入数据操作
exports.post = async (req, res) => {

  // 捕获异常
  try {
    // 生成mysql 插入语句
    let sql = `insert into greatperson (realName,anonym,createTime,context,newsLink,propertyId) values (?,?,?,?,?,?)`
    // 时间戳赋值
    req.body.createTime = req.nowTime
    console.log(req.body.createTime);
    // 将属性结构到数组中
    let params = [req.body.realName, req.body.anonym, req.body.createTime, req.body.context, req.body.newsLink, req.body.propertyId]
    // 执行sql返回结果
    const results = await sqlOne(sql, params);
    // 返回结果 判断影响行数
    if (results.affectedRows > 0) {
      // 成功响应
      return res.onSuccess()
    }
    return res.onError()
  }catch(e){
    return res.onError(e)
  }

}

// 判断数据是否存在
 function  selectByIdParans(id) {
   return new Promise(async (resolve, reject) => {
    // 查询数据是否存在
    let sql1 = `select * from greatperson where id = ?`;
    // 执行sql返回结果
    const results1 = await sqlOne(sql1, [id]);
    // 判断是否查询到数据
    if (results1.length === 0) {
      // 数据不存在
     return reject("数据不存在");
    }
    resolve(true);
  })
}

// 根据id修改数据操作

exports.put = async (req, res) => {
  // 捕获异常
  try {
    // 判断存在与否
    await selectByIdParans(req.body.id)
    // if(!flag){
    //   return res.onError("数据不存在")
    // }
    // 修改数据sql 语句
    let sql = `update greatperson set ? where id = ?`
    // 执行sql返回结果
    const results = await sqlOne(sql, [req.body, req.body.id]);
    console.log(results);
    // 返回结果 判断完善行数
    if (results.affectedRows > 0) {
      // 成功响应
      return res.onSuccess()
    }
  }catch(e){
    // 失败响应
    return res.onError(e)
  }
}

// 根据 id 删除数据操作
exports.delete = async (req, res) => {
  // 捕获处理失败
  try {
    // 判断存在与否
    await selectByIdParans(req.params.id)
    // 删除数据sql 表述
    let sql = `delete from greatperson where id = ?`
    // 执行sql返回结果
    const results = await sqlOne(sql, [req.params.id]);
    // 判断是否删除成功
    if (results.affectedRows > 0) {
      // 成功响定
      return res.onSuccess()
    }
    return res.onError()
  }catch(e){
    // 失败响定
    return res.onError(e)
  }
}

// 查询所有

exports.get = async (req, res) => {
  // 捕获处理失败
  try {
    // 关于 property 实体的操作
    // 实体 property 字段 id title context createTime updateTime
    // 表名 greatperson 字段 id realName anonym createTime context newsLink propertyId
    // 查询 greatperson 数据 联表查询  property 查出分类
    let sql = `select g.*,p.title from greatperson as g left join property as p on g.propertyId = p.id;`
    // 执行sql返回结果
    const results = await sqlOne(sql);
    // console.log(results);
    // 判断是否查询成功
    if (results.length > 0) {
      // 成功响定
      return res.onSuccess(results)
    }
    return res.onError()
  }catch(e){
    // 失败响定
    return res.onError(e)
  }
}

// 分类 propertyId
// 根据分类查询 greatperson 数据
exports.get_by_classify = async (req, res) => {
  // 捕获处理失败
  try {
    // 查询所有sql 表述
    let sql = `select * from greatperson where propertyId = ?;`
    let sql2 = `select * from property where id = ?;`
    const { id } = req.query
    // 执行sql返回结果
    const results = await sqlBatch(sql+sql2, [id,id]);
    console.log(results);
    // 判断是否查询成功
    if (results.length > 0) {
      // 成功响定
      return res.onSuccess({ property: results[1][0],greatpersonList:results[0] })
    }
    return res.onError()
  }catch(e){
    // 失败响定
    return res.onError(e)
  }
}

// // greatperson 设置 分类
// exports.set_classify = async (req, res) => {
//   // 捕获处理失败
//   try {
//     // 查询 great_property_classify 数据是否存在
//     let sql = `select * from great_property_classify where greatId = ? and propertyId = ?;`
//     const results = await sqlOne(sql, [req.body.greatId,req.body.propertyId]);
//     if(results.length<=0){
//       // 插入
//       // 查询所有sql 表述
//       let sql = `insert into great_property_classify (greatId,propertyId) values (?,?);`
//       const { greatId, propertyId } = req.body
//       // 执行sql返回结果
//       const results = await sqlBatch(sql, [greatId, propertyId]);
//       console.log(results);
//       // 判断是否查询成功
//       if (results.length > 0) {
//         // 成功响定
//         return res.onSuccess()
//       }
//     }else{
//       // 修改great_property_classify
//       // 查询所有sql 表述
//       let sql = `update great_property_classify set ? where greatId = ? and propertyId = ?;`
//     }
    
//     return res.onError()
//   }catch(e){
//     // 失败响定
//     return res.onError(e)
//   }

// }
